// 计算成员 
    // 枚举成员的值为计算值，这个枚举成员就是计算成员

    enum FileAccess {
        // constant members
        None,
        Read = 1 << 1,  
        Write = 1 << 2, 
        ReadWrite = Read | Write,
        // computed member
        G = "123".length,
      }
// 常量成员
    // 枚举成员的值为常量，这个枚举成员就是常量成员

// 计算值和常量
    // 在以下情况,枚举成员被认为是常量
        // 枚举的第一个成员，且未赋值，他是0
        // E.X is constant:
            enum E {
                X,
            }
    // 自己没赋值，但是前面的成员是数字常量，这时他的值是前一个成员的值加1
    // All enum members in 'E1' and 'E2' are constant.
 
enum E1 {
    X,
    Y,
    Z,
  }
   
  enum E2 {
    A = 1,
    B,
    C,
  }
/*   文字枚举表达式（基本上是字符串文字或数字文字）
  对先前定义的常量枚举成员的引用（可以源自不同的枚举）
  带括号的常量枚举表达式
  应用于常量枚举表达式的+, -,一元运算符之一~
  +, -, *, /, %, <<, >>, >>>, &, |,^以常量枚举表达式作为操作数的二元运算符 */

//   在所有其他情况下，枚举成员被认为是计算的。
enum FileAccesss {
    // constant members
    None,
    Read = 1 << 1,
    Write = 1 << 2,
    ReadWrite = Read | Write,
    // computed member
    G = "123".length,
  }
